Logician conquers computer software automation
Recently, artificial intelligence ChatGPT once again mentioned "automatic generation of software programs" in hot technology news. Indeed, for a long time, no giant software company or scientists from famous university research institutions have claimed that they have successfully implemented a large scientific research project on "software automation technology", that is, they can meet one of the following three requirements: (1 ) According to the design documents, the entire set of software methods and theories can be automatically generated, and (2) successful automated software can be downloaded and used, and (3) teaching books have been published for learning.
The artificial intelligence super giant ChatGPT has announced that it will also enter the research field of automatically generating "programs". So, why is "automatic generation of software programs" so important and why is it so difficult to achieve? let us see:
Since the end of the 20th century and into the 21st century, computer technology has been adopted and automated in almost all industrial and military fields. Nowadays, even cars are beginning to use computers to drive themselves. There is no doubt that the nearly tens of thousands of computer software developers and programmers around the world (for example, there are approximately 4.3 million software developers and programmers in the United States in 2019) are eager to have technology that can automatically generate the entire software (or leave only part of it). new algorithm) so that software production is faster and more reliable. So far, computer software has helped automate production in other fields. Why can't computer software itself achieve automated production?
In fact, after the 1970s and 1980s, almost all major application software companies in the world, including the giant American application software companies Oracle, IBM, and Microsoft, as well as the European software company SAP, and famous universities such as Harvard Thousands of computer software workers have invested in software automation thinking or large and small research projects. At the same time, starting in 1986, the two major computer associations in the United States also initiated
IEEE/ACM International Conference on Automated Software Engineering,
It is held once a year and has been held for more than 30 times so far. It seems that it has not been able to point out a fundamental direction and path to realize software automation, let alone a software automation tool system that is already available.
There are dozens of major disciplines in the world, such as mathematics, physics, chemistry, biomedicine, etc., and there are hundreds of specialized research fields in each major discipline. Because the content of research in various fields is so different, the number of people participating in the research is also inconsistent. As many as a few hundred people, as few as a few people. From the end of the last century to this century, this "automatic software generation" research topic has attracted the attention of thousands of computer software professionals, attracting hundreds of thousands of software talents from universities and companies to engage in research work every year. The problem of "automatic software generation" has not been solved for a long time, not only because of its unimaginable complexity, but also because of the need to borrow ways of thinking from other academic fields to help solve it. It can be seen that the research results automatically generated by this software are indeed extremely valuable compared with other research results in the same period.
The reason why it is difficult to automate computer software is that the intricate relationships between the various parts of the computer software program itself and the logical combination relationships are extremely complex, and a piece of software often consists of nearly tens of millions of text codes. In addition, each programmer takes a long time to manually create the program code, which will lead to many wording errors. Therefore, it takes a long time to write a software, errors are inevitable, and the reliability of the program is extremely worrying. Some software can cost millions of dollars to create. To reduce the high price of software, improve reliability and facilitate maintenance and use, people obviously need software production automation technology.
This "software automation" that has attracted the attention of thousands of computer software professionals is indeed unlikely to rely on science and technology funds that can show significant results in one or two years to create an innovation. Historically, many of these major scientific and technological discoveries were made by scientific and technological workers who had been engaged in research in their spare time for a long time. Interestingly, this same software automation method and theory of great significance was indeed first broken by a mathematical logician who had been unknown for a long time and engaged in cross-border research. The disclosure of this matter originally came from the fact that the scientist needed to ask someone to apply for a visa on his behalf to find out what kind of scientific research he was doing. Like other mathematicians who are traditionally attracted by difficult problems, he no longer cares about professional titles or financial support. He has been immersed in solving scientific and technological problems that he is interested in for a long time in obscurity. He worked for more than 20 years before he succeeded. Later, more people went to the Internet to inquire, and more high-level people affirmed it.
The 2021 Global Innovation Summit of the American Technology Association invited Tang Tonggao to introduce his new technology of "automated software engineering". At the meeting, a representative example was demonstrated. This example was about application software in business management. . Using his automated software tool system, based on a customer's software order, the content roughly includes seven aspects of management operations of the company's planning department, purchasing department, receiving department, warehouse department, sales department, and accounting department. . This automated software tool system at the conference can automatically generate a complete set of application software products for Microsoft Windows computers in 10 minutes. This new, automatically generated software has 145 files totaling approximately 6.3 million bytes. If this newly generated software program C++ code is manually programmed by a senior software engineer, it will usually take at least one or two years. It can be seen that automation is more than 500 to 1000 times faster than manual generation of code for software development. In particular, the maintenance fee for software changes is almost an additional cost. In other words, if you want to change the software, you only need to change the customer's order, and the new code of the software program will be automatically generated, without anyone having to change the program code. It is extremely difficult for people to change the program code. A vice president who hosted the Science and Technology Innovation Summit asked him: "Are you personally an enterprise unit in Pittsburgh, this city, and have actually used your automation software tools? How has the usage been?"
Tang Tonggao replied: "At a party, Mr. Chen Peisi, an engineer from XXXX Glass Light Source Company, said that he invited a programmer to use Java language to create a 'light source performance test analysis' software. This software requires: 'Accept light source The data from the tester was stored in the database, and then statistical analysis was performed. The analyzed data was output in the form of a web page. It took half a year, but failed. The programmer said that he had difficulties. So he asked me for help. I said okay, I'll go to your company and have a look. The software is not complicated, and I can make an application software for you in one day. As a result, the software failed because the data "space black" and "space tab" were confused. I delayed it for a day and used it for another day before giving him another application, and it was completely successful.
In 1985/86, he was appointed as a reviewer by the American Mathematical Review. In 1987, he was invited by Professor Edmund Clark of Carnegie Mellon University to join the "Software Correctness" research team. Professor Edmund Clark himself won the Turing Award for his outstanding work on "Program Correctness Verification". After leaving CMU, he went to other countries to conduct scientific research on "procedural correctness." After several years, he discovered that the internationally mainstream "formal language for program correctness" method that had won multiple awards could not completely solve the verification of general complex software programs. For mathematical formulas, "mathematical induction" can traditionally be used to prove whether the formula is correct. For programs, I don't know if there is a similar "program induction method" that people can use to prove whether a large program is correct. The goal is clear. To completely solve the problem of "program correctness verification", there is only one way: find a "program induction method" for software! Instead, I spent all my spare time in the past six years studying "Procedural Induction" and thinking about what it should look like? In the end, he used the "generalized induction principle" of mathematical logic to successfully construct a universally applicable "program induction method" and completely solved the problem of "program correctness verification". He provided many software theoretical ideas for successful software automation.
What I want to talk about here is that during the process of solving this software theory problem, there were too many issues to think about, which gave him an opportunity and possibility, and led to a new idea of solving problems in the field of software engineering: "Meta Programming logic language" ("Meta" here means "higher-level dominated"). This cross-domain thinking method is a way to take the road of computer software automation. Therefore, he believes that "for most software programs, it is quite troublesome to use verification methods to judge whether the program is correct. It is also possible to use a machine instead of manual programming to automatically generate an absolutely reliable program without having to perform troublesome verification work." , is more effective!" After he participated in the production of a software project that cost nearly 10 million US dollars, which was too expensive, he felt even more the necessity and possibility of "software automation". He turned to the research of "software automation" in 2001.
He further developed his "Meta Program Logic Tool", and with the assistance of this "Meta Program Logic Language", he established a theoretical approach to software automation. Able to learn programming knowledge in each software field. Then according to the requirements of the customer's order (that is, the design document), the entire large software is automatically reconstructed by internal language rules. This "design and development automation" tool system is a software Sdda.exe, also known as "visual D++ language". Note that there are new algorithms and artificial intelligence algorithms that have never been in the program before. Obviously, up to this point, these new algorithms and artificial intelligence algorithms have not been learned yet and require senior programmers to develop them. Finally, they need to be added to the function library in the system directory. It can be seen that in the future, it will be more necessary to train a large number of senior programmers for new projects in various new software fields and compile ever-changing artificial intelligence algorithms.
He spent roughly thirteen years day and night on this software "design and development automation" software tool. Since 2001, he has been studying method theory and writing various algorithms or modules to prove whether his idea of automated methods is feasible. The first successful test of an instance began sometime in 2004. He would never forget that one dark afternoon, while he was sitting in front of the computer, he was suddenly frightened. He had never seen a large number of characters suddenly appear on the screen in his life, and they kept pouring out from top to bottom. A thought flashed through his mind uncontrollably: "I have never written such a large number of characters. It was not written by me. Who sent it...hmm, ghost?" He looked around uneasily... .' Later, he calmed down and looked at the large number of characters, and found that the special nouns on the screen were all words in the design file. He felt relieved that there was no problem.
After discovering that "fully automated software generation" was possible, he then used email and the Internet to tell a secretary of the IBM CEO and major software units such as the Software Institute:
"Software automation is feasible, you can do it too." But no one wrote back, maybe they didn't receive it, or maybe they didn't believe it. By the end of 2008, he had initially completed a complete and practical automated software tool system called "Visual D++ Language", which was published on the Internet and can also be downloaded. He worked day and night regardless of holidays for the first eight years, spending almost more than 40,000 hours, and achieved "a meaningful and decisive success in the methods and theories of automated software." In order not to mislead latecomers, it must be treated with caution. He continued to conduct multiple tests of principles. In 2013, he used dictation and asked someone to write and publish the window automation software Visual D++ Language.
of two
Teaching readings, such as "Automating Windows Software Design and Development". In order to prove his "automated software engineering technology" method theory, it is not a narrow example, but a methodology with universal significance. In addition to being successfully used in Windows enterprise management software, this software automation method has also been developed on the Internet. Passed two other popular software automation tools (beta version): "Automated Internet website platform software" and "Automated partial application APP software for Android phones". He treated this scientific research result cautiously, not only as an automated software production tool that would be sold, but also as a successful scientific research event on the road to automated software development. This scientific research work took a total of twenty years, and it has only ended with confidence.
Someone asked him, why do you still have to overcome such a difficult and almost hopeless scientific research problem without any funding? He replied: "In today's world, people who can also make outstanding scientific research achievements are mostly vying to obtain a better economic status. As a mathematician and computer software theoretical scientist, he has long-term experience in a variety of soft and hard engineering technologies. There are not many people who have experienced it. It is my unavoidable historical responsibility to work hard to conquer this fortress of 'software automation'."
(See£ºhttp://www.hslrj.com/epotang/epotang_software_downloadE.html)